A telecommunications network is a collection of terminals that are connected to each other through communication channels. A terminal is any device capable of communicating with other terminals through the channels. Examples of terminals include telephones, fax machines, cell phones, computers, network enabled printers, and even household electronics and appliances that are capable of communicating with other devices across a network. Terminals communicate with other terminals by sending data, typically in the form of a packet, to each other through the channels. In large networks, the data packets are managed in the channels to ensure proper delivery of the packets to their intended destination terminals and conserve bandwidth of the channels by reducing or eliminating unnecessary transfers to unintended terminals.
One method for managing the data packets in the channels is through the utilization of a routing device placed at a point where multiple channels connect or intersect. After the routing device receives a data packet transferred by a source terminal, the routing device is responsible for processing the data packet. The processing performed by the routing device includes determining the intended destination of the data packet and transmitting the data packet through the proper channel toward the destination terminal. A routing device that is directly connected with the terminals is commonly known in the field as a switch. In contrast, a routing device that connects multiple networks together to form a larger network is commonly known in the field as a router. The processing that is performed by a switch is different from the processing that is performed by a router due to the additional layer of networking that the router must handle. However, in regard to the embodiments of the invention, the two processes have enough commonality such that the term “router” will be used hereinafter to denote any routing device, including the switch and the router as known in the field.
One implementation for the processing of data packets in a router is to process the packets in a pipeline. Since data packets typically have the same data structure, the processing that is performed by the router is identical or similar for each data packet. Thus, a pipeline enables multiple data packets to be processed simultaneously, one at each stage of the pipeline. This allows more data packets to be processed in any given amount of time, thereby increasing the throughput of the router. If during processing, access to a separate computing resource is needed (e.g., writing to or reading from a memory resource that stores data), current pipeline processing methods require a round trip acknowledgement to be returned to the issuer of the access request before further processing in order to ensure data integrity.